entrycompletion: set_property() should call property setters
authorPavel Holejsovsky <pavel.holejsovsky@gmail.com>
Fri, 23 Mar 2012 06:09:02 +0000 (07:09 +0100)
committerPavel Holejsovsky <pavel.holejsovsky@gmail.com>
Sun, 8 Apr 2012 10:10:44 +0000 (12:10 +0200)
gtk_entry_completion_set_property() was setting many properties by
directly modifying priv values, bypassing notification invocation and
possibly another actions done by gtk_completion_entry_set_xxx ()
functions.  Fix by invoking set_xxx() instead of setting the property
value directly.

The real bug observerd was that setting text-column property using
g_object_set() caused SIGFPE later when entry completion was about to
appear.  gtk_entry_completion_set_text_column () apparently does way
more important things than just setting priv->text_column member.

https://bugzilla.gnome.org/show_bug.cgi?id=673693

gtk/gtkentrycompletion.c

index 8367ed9957a89eb394da1e4a50d0c12b66335571..cb4aad68a381fd44b59f9c37afe8bee7ee8679c9 100644 (file)
@@ -651,27 +651,33 @@ gtk_entry_completion_set_property (GObject      *object,
         break;
 
       case PROP_TEXT_COLUMN:
-        priv->text_column = g_value_get_int (value);
+       gtk_entry_completion_set_text_column (completion,
+                                             g_value_get_int (value));
         break;
 
       case PROP_INLINE_COMPLETION:
-        priv->inline_completion = g_value_get_boolean (value);
+       gtk_entry_completion_set_inline_completion (completion,
+                                                   g_value_get_boolean (value));
         break;
 
       case PROP_POPUP_COMPLETION:
-        priv->popup_completion = g_value_get_boolean (value);
+       gtk_entry_completion_set_popup_completion (completion,
+                                                  g_value_get_boolean (value));
         break;
 
       case PROP_POPUP_SET_WIDTH:
-        priv->popup_set_width = g_value_get_boolean (value);
+       gtk_entry_completion_set_popup_set_width (completion,
+                                                 g_value_get_boolean (value));
         break;
 
       case PROP_POPUP_SINGLE_MATCH:
-        priv->popup_single_match = g_value_get_boolean (value);
+       gtk_entry_completion_set_popup_single_match (completion,
+                                                    g_value_get_boolean (value));
         break;
 
       case PROP_INLINE_SELECTION:
-        priv->inline_selection = g_value_get_boolean (value);
+       gtk_entry_completion_set_inline_selection (completion,
+                                                  g_value_get_boolean (value));
         break;
 
       case PROP_CELL_AREA: